package com.buss.core.dao;

import java.io.Serializable;

import com.buss.core.model.User;
import com.buss.core.persistence.Paginalbe;
import com.buss.core.persistence.ResultList;

/**
 * 用户信息管理
 * @author gykl
 *
 */
public interface UserDao extends Serializable {
	
	/**
	 * 新增用户信息
	 * @param adminUser
	 */
	public void saveUser(User adminUser);
	
	/**
	 * 修改用户信息
	 * @param adminUser
	 */
	public void editUser(User adminUser);
	
	/**
	 * 修改指定用户的密码
	 * @param userId
	 * @param password
	 */
	public void editUserPass(Long userId,String password);
	
	/**
	 * 用户部门调动
	 * @param userId
	 * @param organId
	 */
	public void editOrganTransfer(Long[] userIds,Long organId);
	
	/**
	 * 用户角色调整
	 * @param userId
	 * @param organIds
	 */
	public void editRoleToUserId(Long userId,Long[] roleIds);
	
	/**
	 * 删除指定用户信息
	 * @param userId
	 */
	public void deleteUser(Long[] userIds);
	
	/**
	 * 获取指定用户信息
	 * @param userId
	 */
	public User loadUser(Long userId);
	
	/**
	 * 获取用户信息,条件可以为空
	 * @param userName
	 * @param disabled
	 * @param page
	 * @return
	 */
	public ResultList<User> queryUser(String companyId, Long organId,String userName,Boolean disabled,Paginalbe page);
	
	/**
	 * 根据单位获取业务员信息
	 * @param companyId
	 * @param isSalesMan
	 * @return
	 */
	public ResultList<User> queryUserBySales(String companyId,Boolean isSalesMan);
	
	/**
	 * 获取指定角色对应用户信息
	 * @param roleId
	 * @param userName
	 * @param disabled
	 * @param page
	 * @return
	 */
	public ResultList<User> queryUserByRoleId(String companyId, Long roleId,String userName,Boolean disabled,Paginalbe page);
	
	/**
	 * 添加用户到相应角色
	 * @param userIds
	 * @param roleId
	 */
	public void updateUsersRole( Long[] userIds,Long roleId);
	
	/**
	 * 取消角色下的指定用户
	 * @param userIds
	 * @param roleId
	 */
	public void removeUsersRole(Long[] userIds,Long roleId);
	
	/**
	 * 根据单位编码和用户编码获取用户信息
	 * @param companyId
	 * @param userId
	 * @return
	 */
	public User loadUser(String companyId,String userId);
}
